﻿using System;
namespace Producers.Liiklusregister.Xtee.Riik.Ee.Producer.Liiklusregister {
    
    
    public class DokTyyp : global::Xtee.Core.Schema.XsdString {
        
        public const string JUHILUBA = "1";
        
        public const string AJUTINEJUHILUBA = "2";
        
        public const string PIIRATUDÕIGUSEGAJUHILUBA = "3";
        
        public const string RAHVUSVAHELINEJUHILUBA = "4";
        
        public const string JUHENDAJATUNNISTUS = "5";
        
        public const string ÕPETAJATUNNISTUS = "6";
        
        public const string MOPEEDIJUHILUBA = "7";
        
        public const string VÄIKELAEVAJUHITUNNISTUS = "8";
        
        public const string JETIJUHITUNNISTUS = "9";
        
        public const string ADRKOOLITUSEKOHANETUNNISTUS = "10";
        
        public const string KUTSETUNNISTUS = "11";
        
        public const string SÕIDUMEERIKUAUTOJUHIKAART = "12";
        
        public const string SÕIDUMEERIKUKONTROLLIJAKAART = "13";
        
        public const string SÕIDUMEERIKUTÖÖKOJAKAART = "14";
        
        public const string SÕIDUMEERIKUTÖÖANDJAKAART = "15";
        
        public DokTyyp(string value) : 
                base(value) {
            this.Validate();
            string annot = null;
            if (Value == "1") {
                annot = "Juhiluba";
            }
            if (Value == "2") {
                annot = "Ajutine juhiluba";
            }
            if (Value == "3") {
                annot = "Piiratud õigusega juhiluba";
            }
            if (Value == "4") {
                annot = "Rahvusvaheline juhiluba";
            }
            if (Value == "5") {
                annot = "Juhendaja tunnistus";
            }
            if (Value == "6") {
                annot = "Õpetaja tunnistus";
            }
            if (Value == "7") {
                annot = "Mopeedijuhiluba";
            }
            if (Value == "8") {
                annot = "Väikelaevajuhi tunnistus";
            }
            if (Value == "9") {
                annot = "Jetijuhitunnistus";
            }
            if (Value == "10") {
                annot = "ADR-koolituse kohane tunnistus";
            }
            if (Value == "11") {
                annot = "Kutsetunnistus";
            }
            if (Value == "12") {
                annot = "Sõidumeeriku autojuhi kaart";
            }
            if (Value == "13") {
                annot = "Sõidumeeriku kontrollija kaart";
            }
            if (Value == "14") {
                annot = "Sõidumeeriku töökoja kaart";
            }
            if (Value == "15") {
                annot = "Sõidumeeriku tööandja kaart";
            }
            if (annot!=null) {
                this._annotation = annot;
            }
            else {
                throw new global::Xtee.Core.Types.XteeSimpleTypeValidationException(string.Format("Enumeration on [{0}] does not allow value : [{1}] ", this.GetType().Name,Value.ToString()));;
            }
        }
        
        public DokTyyp() : 
                base(string.Empty) {
        }
        
        public static bool TryParse(string value, out global::Producers.Liiklusregister.Xtee.Riik.Ee.Producer.Liiklusregister.DokTyyp result) {
            try {
                result = new global::Producers.Liiklusregister.Xtee.Riik.Ee.Producer.Liiklusregister.DokTyyp(value);
                return true;
            }
            catch (System.Exception ) {
                result = null;
                return false;
            }
        }
        
        public static implicit operator String (DokTyyp value) {
            return value.Value;
        }
        
        public static implicit operator DokTyyp (string value) {
            if (value==null) {
                return null;
            }
            return new DokTyyp(value);
        }
    }
}
